home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PsL Monthly 1993 December
/
PSL Monthly Shareware CD-ROM (December 1993).iso
/
prgmming
/
dos
/
c
/
datelib.exe
/
CNVTDATE.C
< prev
next >
Wrap
C/C++ Source or Header
|
1992-03-27
|
7KB
|
211 lines
static char cnvtdate_prog[] = "@(#)Datumskonversionen";
static char cnvtdate_ver[] = "@(#)ver 1.00/kr ; 31.05.91";
/* cnvtdate Konvertieren von Datumsformaten
**
** Autor Klaus Rath
**
** Deklaration char *cnvtdate(char *datum, int dest_format);
**
** Übergabe Die Funktion erwartet einen String in einem der folgenden
** Formate :
** tt.mm.[[jj]jj] -- Deutsches Format
** mm/tt[/[jj]jj] -- Amerikanisches Format
** [jj]jjmmtt -- Datenbankformat DDB/4
** sowie einen int-Wert, der das Ausgabeformat festlegt.
** Rückgabe Zeiger auf ein char-Array, das ausreichend dimensioniert
** sein sollte.
** Anmerkungen Die Funktion überprüft nicht selbst die Validität des
** übergebenen Datums. Dies sollte die aufrufende Funktion
** vorher mittels checkdate() sichergestellt haben.
** Sollte kein Jahr[hundert] im Übergabestring angegeben wor-
** den sein, ermittelt die Funktion das Default-Jahr[hundert]
** aus der Systemzeit !
** Änderungen 1.00 ; 31.05.91
** Erste vollwertige Version
*/
#include <stdio.h>
#include <string.h>
#include <time.h>
#ifdef __TURBOC__
#define ANSI
#define MSDOS
#include <stdlib.h>
#include <sys\types.h>
#else
#include <sys/types.h>
#endif
#include "datum.h"
#ifdef ANSI
char *cnvtdate(char *dstring, int dest_format, char *erg)
#else
char *cnvtdate(dstring,dest_format,erg)
char *dstring;
int dest_format;
char *erg;
#endif
{
char tag_s[3],monat_s[3],jahr_s[3],jh_s[3];
int format;
char systemzeit_s[26];
time_t systemzeit;
int zaehler;
erg[0] = '\0';
/* Überprüfung auf Gültigkeit bzw. Format :
*/
format = checkdate(dstring);
if ( !format ) {
strcpy(erg,(char *)FALSE);
return(erg);
}
/* Jahrhundert und Jahr aus der Systemzeit ermitteln und vorbelegen :
*/
time(&systemzeit);
strcpy(systemzeit_s,ctime(&systemzeit));
jh_s[0] = systemzeit_s[20];
jh_s[1] = systemzeit_s[21];
jh_s[2] = '\0';
jahr_s[0] = systemzeit_s[22];
jahr_s[1] = systemzeit_s[23];
jahr_s[2] = '\0';
/* Format überprüfen und umkopieren :
*/
if ( format == 1 || format == 2 || format == 7 ) { /* deutsches Format */
tag_s[0] = dstring[0];
tag_s[1] = dstring[1];
tag_s[2] = '\0';
monat_s[0] = dstring[3];
monat_s[1] = dstring[4];
monat_s[2] = '\0';
if ( format == 2 ) {
jh_s[0] = dstring[6];
jh_s[1] = dstring[7];
jh_s[2] = '\0';
jahr_s[0] = dstring[8];
jahr_s[1] = dstring[9];
jahr_s[2] = '\0';
}
else if ( format == 1 ) {
jahr_s[0] = dstring[6];
jahr_s[1] = dstring[7];
jahr_s[2] = '\0';
}
} /* ENDE: Deutsches Format */
else if ( format == 3 || format == 4 || format == 8 ) { /* am.Format */
tag_s[0] = dstring[3];
tag_s[1] = dstring[4];
tag_s[2] = '\0';
monat_s[0] = dstring[0];
monat_s[1] = dstring[1];
monat_s[2] = '\0';
if ( format == 4 ) {
jh_s[0] = dstring[6];
jh_s[1] = dstring[7];
jh_s[2] = '\0';
jahr_s[0] = dstring[8];
jahr_s[1] = dstring[9];
jahr_s[2] = '\0';
}
else if ( format == 3 ) {
jahr_s[0] = dstring[6];
jahr_s[1] = dstring[7];
jahr_s[2] = '\0';
}
} /* ENDE: Amerikanisches Format */
else if ( format == 5 || format == 6 ) { /* Datenbank-Format */
if ( format == 6 ) {
jh_s[0] = dstring[0];
jh_s[1] = dstring[1];
jh_s[2] = '\0';
jahr_s[0] = dstring[2];
jahr_s[1] = dstring[3];
jahr_s[2] = '\0';
tag_s[0] = dstring[6];
tag_s[1] = dstring[7];
tag_s[2] = '\0';
monat_s[0] = dstring[4];
monat_s[1] = dstring[5];
monat_s[2] = '\0';
}
else {
jahr_s[0] = dstring[0];
jahr_s[1] = dstring[1];
jahr_s[2] = '\0';
tag_s[0] = dstring[4];
tag_s[1] = dstring[5];
tag_s[2] = '\0';
monat_s[0] = dstring[2];
monat_s[1] = dstring[3];
monat_s[2] = '\0';
}
} /* ENDE: Datenbankformat */
/* ENDE:if(Formatprüfung und Kopierung) */
/* Umkopieren in das passende Format, falls nötig :
*/
if ( format == dest_format ) {
return(dstring);
}
switch ( dest_format ) {
/* Deutsche Formate */
case 1: strcpy(erg,tag_s);
strcat(erg,".");
strcat(erg,monat_s);
strcat(erg,".");
strcat(erg,jahr_s);
return(erg);
case 2: strcpy(erg,tag_s);
strcat(erg,".");
strcat(erg,monat_s);
strcat(erg,".");
strcat(erg,jh_s);
strcat(erg,jahr_s);
return(erg);
case 7: strcpy(erg,tag_s);
strcat(erg,".");
strcat(erg,monat_s);
strcat(erg,".");
return(erg);
/* Amerikanische Formate */
case 3: strcpy(erg,monat_s);
strcat(erg,"/");
strcat(erg,tag_s);
strcat(erg,"/");
strcat(erg,jahr_s);
return(erg);
case 4: strcpy(erg,monat_s);
strcat(erg,"/");
strcat(erg,tag_s);
strcat(erg,"/");
strcat(erg,jh_s);
strcat(erg,jahr_s);
return(erg);
case 8: strcpy(erg,monat_s);
strcat(erg,"/");
strcat(erg,tag_s);
return(erg);
/* Datenbankformate */
case 5: strcpy(erg,jahr_s);
strcat(erg,monat_s);
strcat(erg,tag_s);
return(erg);
case 6: strcpy(erg,jh_s);
strcat(erg,jahr_s);
strcat(erg,monat_s);
strcat(erg,tag_s);
return(erg);
} /* ENDE: switch(dest_format) */
return((char *)NULL);
} /* ENDE: cnvtdate() */